<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <script>
            // 1. 数组解构
            // 将数组中的元素赋值给变量的简洁写法
            // const [a, b, c] = [1, 2, 3];

            let a = 1;
            let b = 2; // 必须加分号（否则报错）
            [a, b] = [b, a];
            // 变量数和数组元素数不一致时，多余的元素会被忽略，少的会赋值为 undefined。可以用剩余参数来接收
            const [c, d, ...rest] = [1, 2, 3, 4, 5];
            console.log(c, d, rest); // 1 2 [3, 4, 5]
            // 可以设置默认值
            const [e, f, g = 3] = [1, 2];
            // 可以忽略某些元素
            const [h, , i] = [1, 2, 3]; // h = 1, i = 3
            // 多维数组解构
            const [j, [k,]] = [1, [2, 3]]; // j = 1, k = 2
            console.log(j, k);


            // 2. 对象解构
            // 要求对象的属性名和变量名一致（否则undefined），顺序无关
            const obj = {name: 'Tom', age: 18};
            const {age, name} = obj; // name = 'Tom', age = 18
            console.log(name, age);
            // 可以改变变量名
            const {name: nm, age: ag} = obj; // nm = 'Tom', ag = 18

            // 多级对象解构 要把对象名:{}写上
            const {a:{b:{c:cc}}} = {a: {b: {c: 100}}};
            console.log(cc);

        </script>


    </body>
</html>